//导入express
var express = require("express")
var fs = require('fs');
const { url } = require("inspector");
var path = require('path');
//1.创建web应用
var app = express()

//2.创建静态资源服务器   注册中间件
app.use( express.static('jingtaitai') );

//3.请求参数的中间键
app.use(express.json())
app.use(express.urlencoded({extended:false}))


//分页
app.get( '/user/fenye',(req,res)=>{
    var {page,count}=req.query
    var filepath = path.join( __dirname, './json/users.json' );
    var ccc = fs.readFileSync(filepath);
    ccc = ccc.toString()?JSON.parse( ccc ): []    
    var newccc = ccc.slice( (page-1)*count, page*count );
    res.send({msg:'请求成功！',list:newccc})
} )


//模糊搜索接口
app.get( '/user/sousuo', (req,res)=>{
    var { searchkey } = req.query;
    var filepath = path.join( __dirname, './json/users.json' );
    var ccc = fs.readFileSync(filepath);
    ccc = ccc.toString()?JSON.parse( ccc ): []
    //根据参数,从用户的name属性中filter过滤
    var newccc = ccc.filter((item)=>{
        return  new RegExp(searchkey).test( item.phone ) 
    })
    //返回数据
    res.send({ code:200,msg:'查询成功!',list:newccc })
})


//登陆相关服务器接口
app.post( '/user/denglu', (req,res)=>{
    
    var {phone,pass} = req.body;
    //读取users.json文件中的用户数据
    var filepath = path.join( __dirname, './json/users.json' );
    var ccc = fs.readFileSync(filepath);
    ccc = ccc.toString()?JSON.parse( ccc ): []
    //用来自客户端的数据 做判断, 判断是否在服务端的用户列表中
    var i = ccc.findIndex((item,index)=>{
        return item.phone == phone && item.pass == pass;
    })

    //如果i不是-1, 说明来自客户端的数据是合法的.
    if( i != -1 ){
        //登陆成功时, 可以一并返回 登陆成功的用户信息,登陆令牌
        res.send( {code:200, msg:'登陆成功!',userinfo: ccc[i], token:'' } );
    }else{
        res.send( {code:400, msg:'登陆失败!'} );
    }
} )


//注册
app.post( '/user/zhuce', (req,res)=>{
    var { phone } = req.body;
    var filepath = path.join( __dirname, './json/users.json' );
    var ccc = fs.readFileSync(filepath);
    ccc = ccc.toString()?JSON.parse( ccc ): []
    var i = ccc.findIndex((item)=>{
        return item.phone == phone;
    });

    if( i != -1 ){ 
        res.send({ code:400,msg:'该用户已注册,注册失败!' })
    }else{
        ccc.push( {...req.body,ingroup:'董事长',isadmin:true,zhuangtai:'正常',xuhao:1,bianhao:1} )
        fs.writeFileSync(filepath, JSON.stringify( ccc ), 'utf8' );
        res.send({ code:200,msg:'注册成功!' })
    }
})


//新增
app.post( '/user/add', (req,res)=>{
    //获取注册相关的参数
    var { phone } = req.body;
    //读取users.json文件中的用户数据
    var filepath = path.join( __dirname, './json/users.json' );
    var ccc = fs.readFileSync(filepath);
    ccc = ccc.toString()?JSON.parse( ccc ): []
    //判断新用户是否已存在
    var i = ccc.findIndex((item)=>{
        return item.phone == phone;
    });

    if( i != -1 ){ //用户已存在,注册失败
        res.send({ code:400,msg:'该用户已注册,新增失败!' })
    }else{
        //添加新用户到users.json中
        ccc.push( {...req.body,ingroup:'董事长',isadmin:true,zhuangtai:'正常',xuhao:1,bianhao:1} )
        fs.writeFileSync(filepath, JSON.stringify( ccc ), 'utf8' );
        res.send({ code:200,msg:'新增成功!' })
    }
})


//删除
app.post( '/user/delete' ,(req,res)=>{
    //获取手机号 参数
    var {phone} = req.body;

    //读取users.json文件中的用户数据
    var filepath = path.join( __dirname, './json/users.json' );
    var ccc = fs.readFileSync(filepath);
    ccc = ccc.toString()?JSON.parse( ccc ): []

    //在ccc中查找手机号对应的用户
    var i = ccc.findIndex((item)=>{
        return item.phone == phone;
    })
    if( i != -1 ){ //条件成立, 说明 找到了需要删除的用户.它在ccc中的下标是 i
        ccc.splice( i, 1 );
        fs.writeFileSync(filepath, JSON.stringify( ccc ), 'utf8' );
        //分页
        var newccc = ccc.slice( 0, 5);
        //返回删除后,第1页的新数据
        res.send({ code:200,msg:'删除成功!',list: newccc })
    }else{
        res.send({ code:400,msg:'删除失败!' })
    }
})


//4.设置监听端口
app.listen(8080,()=>{
    console.log('服务器成功被帅气的你启动运行');
});